Im folgenden werden die verschiedenen Benutzeroberflächen gezeigt und die grundlegende Architektur festgelegt.

\subsection{Benutzerschnittstellen}
Die Benutzerschnittstelle beinhaltet folgende Ansichten:
\begin{itemize}
  \item Kartenansicht
  \item Fehlerbildansicht
  \item Hilfeansicht
\end{itemize}

\subsubsection{Kartenansicht}
In der Kartenansicht \ref{mapviewscreen} werden dem Benutzer alle Fehlerbilder
als Pin auf einer Weltkarte angezeigt. Er hat die Möglichkeit ein Fehlerbild auszuwählen. Dieses
wird ihm dann als Miniaturbild mit der Anzahl der darin enthaltenen Fehlern und
des Titels angezeigt.
\begin{figure}[H]
  \centering
  \includegraphics[width=1.0\textwidth]{bilder/screen1.jpg}
  \caption{Kartenansicht}
  \label{mapviewscreen}
\end{figure}

\subsubsection{Bildansicht}
In der Bildansicht \ref{imageviewscreen1} wird dem Benutzer das fehlerhafte Bild
angezeigt. Durch die bereits aus anderen Anwendung bekannte Zoom-Geste kann das Bild vergrößert und
verkleinert werden. Durch langes Drücken auf die Stelle an der der Fehler ist
wird der Bereich grün eingefärbt und der Fehler wird gewertet. Ein langes
Drücken auf eine andere Stelle bewirkt nichts. Durch eine Schüttelgeste wird
ein Rahmen auf dem Bild gezeichnet, der einen Bereich mit einem Fehler
umschließt \ref{imageviewscreen3}.


 \begin{figure}[H]
  \centering
  \includegraphics[width=1.0\textwidth]{bilder/screen2.jpg}
  \caption{Bildansicht - normal}
  \label{imageviewscreen1}
\end{figure}
\begin{figure}[H]
  \centering
  \includegraphics[width=1.0\textwidth]{bilder/screen3.jpg}
  \caption{Bildansicht - vergrößertes Bild}
  \label{imageviewscreen2}
\end{figure}
\begin{figure}[H]
  \centering
  \includegraphics[width=1.0\textwidth]{bilder/screen4.jpg}
  \caption{Bildansicht - Fehlerhinweis}
  \label{imageviewscreen3}
\end{figure}

\subsection{Architektur}
Das Klassendiagramm (siehe Abbildung \ref{uml}) zeigt den Aufbau der Anwendung. Die einzelnen Klassen und deren Funktionen sind im folgenden erklärt.

\subsubsection*{ImageManager}
Die Klasse ImageManager hat die Aufgabe aus einer Datenquelle alle SpotImages zu erzeugen und diese zu verwalten.

\subsubsection*{SpotImage}
Ein SpotImage definiert ein spezielles Fehlerbild mitsamt seinen geographischen Koordinaten, Titel, Beschreibungstext und den eigentlichen Fehlern (Klasse Difference). Sie bietet über die Funktion ''doesHitWith'' die Möglichkeit anhand der Angabe einer xy-Koordinate festzustellen ob dort ein Fehler im Bild existiert. Diese Funktion wird benötigt wenn der Benutzer auf das Bild, um zu überprüfen ob dort auch wirklich ein Fehler versteckt ist.

\subsubsection*{Difference}
Die Klasse Difference stellt einen einzelnen Fehler in einem SpotImage dar. Dieser wird durch seine Position im Bild (xy-Koordinate) und dessen Größe (Breite und Höhe) definiert.

\subsubsection*{MapViewController}
Der MapViewController ist für den View zuständig, der die Weltkarte und die SpotImages anzeigt.

\subsubsection*{ImageViewController}
Das Anzeigen des im MapViewController ausgewählten SpotImage geschieht im View des ImageViewController. Der ImageViewController besitzt daher eine Referenz auf das gerade aktive SpotImage. Alle aufgedeckten Fehler werden temporär gemerkt um dem Spieler zu zeigen wie viele Fehler noch zu finden sind.

\subsubsection*{AboutViewController}
Für die Anzeige einer Kurzanleitung für das Spiel ist der AboutViewController zuständig.


\begin{figure}[H]
  \centering
  \includegraphics[width=1.0\textwidth]{bilder/uml.png}
  \caption{UML-Klassendiagramm}
  \label{uml}
\end{figure}